﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
   public class Solution11
    {
        public string LongestCommonPrefix(string[] strs)
        {
            if (strs.Length == 0)//如果是零，则直接返回空字符串
            {
                return "";
            }
            if (strs.Length == 1)//如果长度是一，则返回这个字符串
            {
                return strs[0];

            }
            int length = strs[0].Length;
            int index = 0;
            for (int u = 1; u < strs.Length; u++)//去长度最小的字符串来判断，这样不会导致数组异常
            {
                if (strs[u].Length < length)
                {
                    length = strs[u].Length;
                    index = u;//返回长度最小字符串的index
                }
            }
            StringBuilder sb = new StringBuilder();
            StringBuilder ss = new StringBuilder();
            char[] str = strs[index].ToCharArray();//对长度最小的字符串装换位数组，以便于判断
            bool flag = true;
            int i = 0;
            for (i = 0; i < str.Length; i++)//因为最长公共前缀不会超过最小的字符串的长度
            {       //对于第j个字符串所转成的字符串的第i个字符进行判断
                for (int j = 0; j < strs.Length; j++)//对strs的每一个数组进行遍历
                {
                    if (j != index)
                    {
                        char[] s = strs[j].ToCharArray();//把strs的一个字符串装换位字符数组
                        if (s[i] != str[i])//对最小字符串的数组和每一个字符串装换成的数组进行判断
                        {
                            flag = false;
                            break;
                        }
                    }
                }
                if (flag == true)
                {
                    ss = sb.Append(str[i]);
                }
                else
                {
                    break;
                }
            }
            return ss.ToString();
        }
    }
}
